﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Drifting.MotionPlanning.Primitives;

namespace Drifting.MotionPlanning.PointSets
{
    abstract public class PointSet
    {
        static public double Euclidean2(double[] q1, double[] q2)
        {
            double sum = 0;
            for (int i = 0; i < q1.Length; ++i)
            {
                double di = q1[i] - q2[i];
                sum += di * di;
            }
            return sum;
        }

        virtual public int Count
        {
            get { throw new NotImplementedException(); }
        }

        virtual public void Reset()
        {
            throw new NotImplementedException();
        }

        virtual public void Neighbor_RangeQuery(double[] key, double r, ref List<State> neighbors)
        {
            throw new NotImplementedException();
        }

        virtual public void Neighbor_SingleQuery(double[] key, ref State x_nearest, ref double dist2)
        {
            throw new NotImplementedException();
        }

        virtual public void Neighbor_KQuery(double[] key, int K, ref List<State> neighbors)
        {
            throw new NotImplementedException();
        }

        virtual public bool AddState(State x)
        {
            throw new NotImplementedException();
        }

        virtual public bool DelState(State x)
        {
            throw new NotImplementedException();
        }

        virtual public bool Contains(State x)
        {
            throw new NotImplementedException();
        }

        virtual public void ReportVerticesSnapshot(ref List<State> snapshot)
        {
            throw new NotImplementedException();
        }

        virtual public bool inSpace(double[] key)
        {
            throw new NotImplementedException();
        }
    
    }
}
